# This Python file uses the following encoding: utf-8
from polgr.main import models
    
def AddOrganisationVote(uid,name,sentiment):
    if name.startswith('@'):
        org=models.Organisation.objects.get(eid__iexact=name)
        if not org:
            return
    else:
        org=models.Organisation.objects.get(name__iexact=name)
        if not org:
            return

    ov,f = models.OrganisationVote.objects.get_or_create(uid=uid,organisation=org,
                     		                       defaults={'sentiment':0})
    ov.sentiment = sentiment
    ov.save()

def AddPersonVote(uid,name,sentiment):
    if name.startswith('@'):
        p=models.Person.objects.get(eid__iexact=name)
        if not p:
            return
        pv,f = models.PersonVote.objects.get_or_create(uid=uid,person=p,
                                                  defaults={'sentiment':0})
        pv.sentiment = sentiment
        pv.save()
        
def ProcessOrganisationVotes(date):
    pd = {}
    ov = models.OrganisationVote.objects.all()
    for o in ov:
        pd[o.organisation] = [0,0,0]
    for o in ov:
        pd[o.organisation][o.sentiment+1] += 1
    for oid,v in pd.items():
        ol,f = models.OrganisationLog.objects.get_or_create(date=date,organisation=oid,
                         	                   defaults={'pos':0,
                         	                             'neut':0,
                         	                             'neg':0,})
        ol.pos=v[2]
        ol.neut=v[1]
        ol.neg=v[0]
        ol.save()

def ProcessPersonVotes(date):
    pd = {}
    pv = models.PersonVote.objects.all()
    for p in pv:
        pd[p.person] = [0,0,0]
    for p in pv:
        pd[p.person][p.sentiment+1] += 1
    for pid,v in pd.items():
        pl,f = models.PersonLog.objects.get_or_create(date=date,person=pid,
                                             defaults={'pos':0,
                                                       'neut':0,
                                                       'neg':0,})
        pl.pos=v[2]
        pl.neut=v[1]
        pl.neg=v[0]
        pl.save()

def GetOrganisationKeywords():
    kw= []
    ov = models.Organisation.objects.all()
    for o in ov:
        kw.append(o.name)
        kw.append(o.eid)
    return kw

def GetPersonKeywords():
    kw= []
    pv = models.Person.objects.all()
    for p in pv:
#        kw.append(p.surname)
        kw.append(p.eid)
    return kw

def InsertData():
    ot = [
        [u'Κόμματα'],
        [u'Κράτος'],
        ]
    org = [
        [u'Κόμματα',u'ΠΑΣΟΚ','@pasok'],
        [u'Κόμματα',u'ΝΔ','@nd'],
        [u'Κόμματα',u'ΚΚΕ','@kke'],
        [u'Κόμματα',u'ΣΥΡΙΖΑ','@syriza'],
        [u'Κόμματα',u'ΛΑΟΣ','@laos'],
        [u'Κράτος',u'Κυβέρνηση','@greekgov'],
        [u'Κράτος',u'Βουλή','@greekparl'],
        ]

    pol = [
        [u'Παπανδρέου Γιώργος','@papandreou',u'ΠΑΣΟΚ',u'Πρωθυπουργός'],
        [u'Πάγκαλος Θεόδωρος','@TPangalos',u'ΠΑΣΟΚ',u'Αντιπρόεδρος κυβέρνησης'],
        [u'Παπακωνσταντίνου Γιώργος','@gpapak',u'ΠΑΣΟΚ',u'Υπ.Οικονομίας'],
        [u'Βενιζέλος Ευάγγελος','@evenizelos',u'ΠΑΣΟΚ',u'Υπ.Άμυνας'],
        [u'Διαμαντοπούλου Άννα','@diamantopoulou',u'ΠΑΣΟΚ',u'Υπ.Παιδείας'],
        [u'Χρυσοχοίδης Μιχάλης','@chrisochoidis',u'ΠΑΣΟΚ',u'Υπ.Προστασίας του Πολίτη'],
        ]
    for o in ot:
        models.AddOrganisationType(o[0])
    for o in org:
        models.AddOrganisation(o[1],o[0],o[2])
    for p in pol:
        models.AddPerson(p[0],p[1])
	models.AddPosition(p[0],p[2],"Μέλος")
	models.AddPosition(p[0],"Κυβέρνηση",p[3])

def ClearData():
	models.ClearModel()
